package com.service;

import java.util.List;
import java.util.Map;

import com.baomidou.mybatisplus.mapper.Wrapper;
import com.baomidou.mybatisplus.service.IService;
import com.entity.TokenEntity;
import com.utils.PageUtils;


/**
 * Token服务接口
 *
 * 该接口定义了与Token相关的业务方法，包括分页查询Token数据、生成Token、获取Token实体等。
 * 通过实现该接口，可以实现Token的管理和使用，确保用户身份的安全性和有效性。
 *
 * @author team10
 */
public interface TokenService extends IService<TokenEntity> {

	/**
	 * 分页查询Token数据
	 *
	 * @param params 查询参数，包括分页信息
	 * @return 返回分页结果，包含查询到的Token数据
	 */
	PageUtils queryPage(Map<String, Object> params);

	/**
	 * 根据条件查询Token列表
	 *
	 * @param wrapper 条件构造器，用于构造查询条件
	 * @return 返回查询到的Token数据列表
	 */
	List<TokenEntity> selectListView(Wrapper<TokenEntity> wrapper);

	/**
	 * 分页查询Token数据，支持自定义查询条件
	 *
	 * @param params 查询参数，包括分页信息
	 * @param wrapper 条件构造器，用于构造查询条件
	 * @return 返回分页结果，包含查询到的Token数据
	 */
	PageUtils queryPage(Map<String, Object> params, Wrapper<TokenEntity> wrapper);

	/**
	 * 生成一个新的Token
	 *
	 * @param userid 用户ID
	 * @param username 用户名
	 * @param tableName 表名
	 * @param role 用户角色
	 * @return 返回生成的Token
	 */
	String generateToken(Long userid, String username, String tableName, String role);

	/**
	 * 根据Token获取Token实体
	 *
	 * @param token Token值
	 * @return 返回对应的Token实体
	 */
	TokenEntity getTokenEntity(String token);

}
